<?php

namespace App\Service;

use App\Model\Follow;

/**
 * 关注
 * @author 许立 2018年11月06日
 */
class FollowService extends BaseService
{
    const STATUS_FOLLOW = 1;

    const STATUS_UNFOLLOW = 0;

    /**
     * 构造函数
     */
    public function __construct()
    {
        $this->model = new Follow();
    }

    /**
     * 分页获取列表数据
     * @param  array   $where    [数据条件]
     * @param  string  $orderBy  [排序字段]
     * @param  string  $order    [排序类型]
     * @param  boolean $is_page  [是否分页]
     * @param  integer $pageSize [每页显示的数量]
     * @return [obj]            [模型列表实例]
     * @author 许立 2018年11月06日
     */
    public function getAllList($where=[],$orderBy='created_at',$order='desc',$is_page=true,$pageSize=15)
    {
        return $this->model->getAllList($where,$orderBy,$order,$is_page,$pageSize)->toArray();
    }

    /**
     * 遍历获取用户信息
     * @param array $array 关注列表
     * @return array
     * @author 许立 2018年11月06日
     */
    public function handleMemberInfo($array)
    {
        if (empty($array) || !is_array($array)) {
            return $array;
        }

        // 根据被关注者id索引数组
        $newArray = array_column($array, null, 'member_id');

        // 获取被关注用户id数组
        $followeeIds = array_keys($newArray);

        // 用户信息列表
        return (new MemberService())->getListByIds($followeeIds);
    }

    /**
     * 取消和被取消
     * @param int $followerId 关注者id
     * @param int $followeeId 被关注者id
     * @param string $action 操作
     * @author 许立 2018年11月06日
     */
    public function follow($followerId, $followeeId, $action = 'FOLLOW')
    {
        // 先查询是否已有记录
        $row = $this->model
            ->where('member_id', $followeeId)
            ->where('follower_id', $followerId)
            ->first();
    }
}